<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>02_模板语法</title>
</head>
<body>
<!--
1. 模板的理解:
  动态的html页面
  包含了一些JS语法代码
    大括号表达式
    指令(以v-开头的自定义标签属性)
2. 双大括号表达式
  语法: {{exp}} 或 {{{exp}}}
  功能: 向页面输出数据
  可以调用对象的方法
3. 指令一: 强制数据绑定
  功能: 指定变化的属性值
  完整写法:
    v-bind:xxx='yyy'  //yyy会作为表达式解析执行
  简洁写法:
    :xxx='yyy'
4. 指令二: 绑定事件监听
  功能: 绑定指定事件名的回调函数
  完整写法:
    v-on:click='xxx'
  简洁写法:
    @click='xxx'
-->
<div id="app">
  <h2>1. 双大括号表达式</h2>
  <p>content=<b>{{content}}</b></p>
  <p>content.toUpperCase()=<b>{{content.toUpperCase()}}</b></p>
  <p>content.startsWith('d')=<b>{{content.startsWith('d')}}</b></p>

  <h2>2. 指令一: 强制数据绑定</h2>
  <a href="url">href</a><br>
  <a v-bind:href="url">v-bind:href</a><br>
  <a :href="url">:href</a><br>

  <h2>3. 指令二: 绑定事件监听</h2>
  <button v-on:click="test(content)">v-on:click</button>
  <button @click="reverseMessage">@click</button>

</div>


<script type="text/javascript" src="../public/cdn/vue/2.6.10/vue.min.js"></script>
<script type="text/javascript">
  const vm = new Vue({
    el: '#app',
    data: {
      content: 'deal late no more!',
      url: 'http://www.atguigu.com'
    },
    methods: {
      test (param) {
        alert('好啊!!!' + param)
      },
      reverseMessage: function () {
        this.content = this.content.split('').reverse().join('')
      }
    }
  })
  console.log('vm.content=' + vm.content);
  // 只有当实例被创建时就已经存在于 data 中的 property 才是响应式的
  vm.newProp = '这个新变量不是响应式的'

  // console.log(vm.$data === data)
  console.log(vm.$el === document.getElementById('app'))
</script>
</body>
</html>